In many computers and other kinds of processors, adders are used not only in arithmetic logic units, but also in other parts, where they are used to calculate addresses, table indices, increment and decrement operators, and similar operations.
FIG. 1 to which reference is now made illustrates a one-bit full adder 100 and a multi-bit ripple carry adder 120, all known in the art. One-bit full adder 100, receives three one-bit values as input, A, B, and Cin, and adds them. The output of one-bit full adder 100 is the calculated sum of the three input bits, S, and a bit carried out from the add operation, Cout.
Multi-bit ripple carry adder 120 may be used for adding N-bit variables A and B. Multi-bit ripple carry adder 120 may be constructed from N one-bit full adders 100. Each full adder 100 inputs a bit Ai from variable A and a bit Bi from variable B. Each full adder also inputs a carry in, Cin-1, which is the carry out of the previous adder, Cout-i-1.
FIG. 2, to which reference is now made, illustrates an exemplary, known in the art, four-bit ripple carry adder 120 used to add two 4-bit variables, A=1110 and B=0101, and comprises four one-bit full adders 100: 100a, 100b, 100c and 100d. 
The input bits of full adder 100a are the least significant bits (LSB) of A, (e.g. 0), the LSB of B, (e.g. 1), and a carry in which is by definition 0 for the first full adder. Full adder 100a may perform the calculation (in this example 0+1+0). The output bits of full adder 100a are the result bit S with value of 1, and the carry out bit Cout, with value of 0. The Cout of full adder 100a becomes the Cin of full adder 100b. It may be appreciated that full adder 100b may start its computation only after the computation of full adder 100a has been completed and the same constraint applies to all full adders including 100c and 100d, except for the first. The last Cout, of the last full adder 100d, is referred to as the overflow of the computation.
The computation steps of this example are: In step 1, bit 0 (LSB) of both variables is added resulting in a bit S0 and a carry out bit Cout-0 In step 2, bit 1 of both variables and the carry out of the previous step, Cout-0, are added, resulting in a bit S1 and a carry out bit Cout-1. In step 3, bit 2 of both variables and the carry of the previous step, Cout-1, are added, resulting in a bit S2 and a carry out bit Cout-2. Finally, in step 4, bit 3 of both variables and the carry of the previous step, Cout-2, are added, resulting in a bit S3 and a carry out bit Cout-3. The result of the add operation is all bits S from all steps and the last carry out, which is the overflow if its value is 1.
It may be appreciated that a computation step may start only when all its input values are known, i.e. Ai, Bi and Cin-i. Ai and Bi are known in advance (bits from the input numbers A and B). The first Cin is 0 (this is the first step, there is no previous step, thus there is no value to carry into this step). The value of Cin in each step (except for the first one) is known only after the computation of the previous step is completed, as it is the Cout of that former step.
It may be appreciated that the ripple carry adder can get very slow when adding large multi bit values. The entire ripple carry add computation is serial and its complexity is O(N), which is a disadvantage.